FACTURA‍‍‍‍‍‍clientes (cod_clientes,nombre,direccion,telefono)facturas(num_factura,cod_cliente,fecha)productos(cod_producto,descripcion,precio,iva)‍‍‍
facturas_productos(num_factura,cod_producto,cantidad)


create database factura

create table clientes(
cod_cliente varchar(10)no tnull primary key,
nombre varchar(30)notnull,
telefono varchar(10)not null,
direccion varchar(30)not null,
)

create table facturas(
num_factura varchar(5) not nul lprimary key,
cod_cliente varchar(10) not null,
fecha date not null,
)
create table productos (
cod_producto varchar(5) not null primary key,
descripcion varchar(30) not null,
precio int not null,
iva int not null,
)
create table facturas_productos(
num_factura varchar(5) not null primary key,
cod_producto varchar(5) not null,
cantidad int not null
)
/*foraneas ... */

Alter table facturas
Add constraint fk_facturas_cod_cliente Foreign key(cod_cliente)references clientes(cod_cliente
)

Alter table facturas_productos
Add constraint fk_facturas_productos_num_factura Foreign key(num_factura)references facturas(num_factura
)

Alter table facturas_productos
Add constraint fk_facturas_productos_cod_producto Foreign key(cod_producto)references productos(cod_producto
)

/* insertar datos*/
insert into clientes(cod_cliente,nombre,telefono,direccion)values (10123445,'luz alvardo',8862330,'cll 20b # 66-02')
insert into clientes(cod_cliente,nombre,telefono,direccion)values (12345678,'jeimy chavarro',8865066,'av 81# 25-04')
insert into clientes(cod_cliente,nombre,telefono,direccion)values (89076543,'tatiana barbsa',8845342,'cll 80 # 10-13')
insert into clientes(cod_cliente,nombre,telefono,direccion)values (32145678,'jeferson roncacnio',8789875,'kr 88 # 31-01')
insert into clientes(cod_cliente,nombre,telefono,direccion)values (77788899,'fabian hernandez',2005304,'av NQS 100 # 45-02')
insert into clientes(cod_cliente,nombre,telefono,direccion)values (12309876,'camilo albail',5777625,'kr 100# 57j-58')

insert into facturas(num_factura,cod_cliente,fecha)values (00001, 10123445,'6/8/2011')
insert into facturas(num_factura,cod_cliente,fecha)values (00002, 12345678,'6/8/2011')
insert into facturas(num_factura,cod_cliente,fecha)values (00003, 89076543,'1/9/2011')
insert into facturas(num_factura,cod_cliente,fecha)values (00004, 32145678,'8/9/2011')
insert into facturas(num_factura,cod_cliente,fecha)values (00005, 77788899,'8/9/2011')
insert into facturas(num_factura,cod_cliente,fecha)values (00006, 12309876,'5/9/2011')

insert into productos(cod_producto,descripcion,precio,iva)values(1234,'jabon',3500,6)
insert into productos(cod_producto,descripcion,precio,iva)values(5678,'shampoo',10200,10)
insert into productos(cod_producto,descripcion,precio,iva)values(9012,'paitos',2850, 10)
insert into productos(cod_producto,descripcion,precio,iva)values(3456,'paales grande',35150, 16)
insert into productos(cod_producto,descripcion,precio,iva)values(7890,'toallas',2200,10)
insert into productos(cod_producto,descripcion,precio,iva)values(0987,'tampones',3800, 10)

insert into facturas_productos(num_factura,cod_producto,cantidad)values (00001, 1234, 3)
insert into facturas_productos(num_factura,cod_producto,cantidad)values (00001, 5678, 2)
insert into facturas_productos(num_factura,cod_producto,cantidad)values (00002, 9012, 2)
insert into facturas_productos(num_factura,cod_producto,cantidad)values (00003, 3456, 1)
insert into facturas_productos(num_factura,cod_producto,cantidad)values (00004, 7890, 2)
insert into facturas_productos(num_factura,cod_producto,cantidad)values (00004, 0987, 5)


/*consultas.......

1. Cuantos productos por cada factura*/
select facturas_productos.num_factura,count(facturas_productos.cod_producto)AS'cantidad de productos'
from facturas_productos
group by facturas_productos.num_factura

/*2. Listar el codigo de producto,descripcion,precio, cantidad, subtotal(precio*cantidad)*/
select facturas_productos.cod_producto,descripcion, precio,count(facturas_productos.cantidad)as'cantidad',sum(precio)as 'subtotal'
from productos,facturas_productos
where productos.cod_producto=facturas_productos.cod_producto
group by facturas_productos.cod_producto,productos.descripcion,productos.precio

/*3. Cual es el promedio facturado de un determinado cliente*/
select clientes.nombre,avg(precio*cantidad)as'promedio'
from clientes,facturas,productos,facturas_productos
where facturas.cod_cliente=clientes.cod_cliente and
facturas_productos.num_factura=facturas.num_factura and
facturas_productos.cod_producto=productos.cod_producto
group by clientes.nombre

/*4. A que cliente nunk se le ha facturado o en x fecha*/
select distinct facturas.fecha,clientes.cod_cliente,nombre
from clientes,facturas
where clientes.cod_cliente=facturas.cod_cliente and fecha!='6/8/2011'

/*5. Listar los productos q tengan precio entre 2000 y 3000*/
select *from productos where precio between 2000 and 3000

/*6. Los clientes que viven en la direccionen la cll 20b # 66-02.*/
select clientes.nombre, clientes.direccion from clientes where clientes.direccion='cll 20b # 66-02'

/*7. Entregue estadsticas sobre los precios por productos. Entregar:
1. El promedio.*/
SELECT AVG(productos.precio)as'promedio de los precios de productos'from productos where precio>0
/*2. La varianza.*/
selectVAR(productos.precio)as'varianza de los precios de productos'from productos where precio>0
/*3. El mximo.*/
selectMAX(productos.precio)as'maximo de los precios de productos'from productos where precio>0
/*4. El mnimo.*/
selectMIN(productos.precio)as'minimo de los precios de productos'from productos where precio>0
/*5. La moda.*/
SELECTDISTINCT productos.precio,count(productos.precio)from productos groupby productos.precio orderbycount(productos.precio) DESC


/* 8 Obtener el apellidos de todos los empleados en mayuscula*/

select UPPER (nombre) AS 'NOMBRES' from clientes